home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet multimedia / Muzyka / Edytory sampli (probek dzwieku) / ZynAddSubFX_2.2.0 / Setup_ZynAddSubFX-2.2.0.exe / source code / UI / MicrotonalUI.fl < prev    next >
Text File  |  2005-03-14  |  11KB  |  271 lines

  1. # data file for the Fltk User Interface Designer (fluid)
  2. version 1.0106 
  3. header_name {.h} 
  4. code_name {.cc}
  5. decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
  6.  
  7. decl {//License: GNU GPL version 2} {} 
  8.  
  9. decl {\#include <stdlib.h>} {public
  10.  
  11. decl {\#include <stdio.h>} {public
  12.  
  13. decl {\#include <string.h>} {public
  14.  
  15. decl {\#include <FL/Fl_File_Chooser.H>} {public
  16.  
  17. decl {\#include <FL/fl_ask.H>} {public
  18.  
  19. decl {\#include "../Misc/Microtonal.h"} {public
  20.  
  21. class MicrotonalUI {} {
  22.   Function {make_window()} {} {
  23.     Fl_Window microtonaluiwindow {
  24.       label Scales
  25.       xywh {99 164 405 450} type Double hide
  26.     } {
  27.       Fl_Group {} {
  28.         tooltip {Center where the note's freqs. are turned upside-down} xywh {249 2 155 45} box ENGRAVED_FRAME
  29.       } {
  30.         Fl_Check_Button {} {
  31.           label {Invert keys}
  32.           callback {microtonal->Pinvertupdown=(int) o->value();
  33. if (microtonal->Pinvertupdown==0) centerinvertcounter->deactivate();
  34.    else centerinvertcounter->activate();}
  35.           tooltip {Turn upside-down the note frequencies} xywh {254 13 55 30} down_box DOWN_BOX labelfont 1 labelsize 12 align 148
  36.           code0 {o->value(microtonal->Pinvertupdown);}
  37.         }
  38.         Fl_Counter centerinvertcounter {
  39.           label Center
  40.           callback {microtonal->Pinvertupdowncenter=(int) o->value();}
  41.           xywh {319 13 80 20} labelfont 1 labelsize 12 align 130 minimum 0 maximum 127 step 1 textfont 1
  42.           code0 {o->lstep(microtonal->getoctavesize());}
  43.           code1 {o->value(microtonal->Pinvertupdowncenter);}
  44.           code2 {if (microtonal->Pinvertupdown==0) o->deactivate();}
  45.         }
  46.       }
  47.       Fl_Group microtonalgroup {selected
  48.         xywh {3 49 402 398} box ENGRAVED_FRAME
  49.         code0 {if (microtonal->Penabled==0) o->deactivate();}
  50.       } {
  51.         Fl_Button applybutton {
  52.           label Retune
  53.           callback {apply();}
  54.           tooltip {Retune the synth accorging to the inputs from "Tunnings" and "Keyboard Mappings"} xywh {8 413 107 28} box THIN_UP_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 18
  55.         }
  56.         Fl_Value_Output octavesizeoutput {
  57.           label {nts./oct.}
  58.           callback {o->value(microtonal->getoctavesize());}
  59.           tooltip {Notes/Octave} xywh {150 423 35 17} labelsize 10 align 5 maximum 500 step 1 value 12 textfont 1
  60.           code0 {o->value(microtonal->getoctavesize());}
  61.         }
  62.         Fl_Input nameinput {
  63.           label {Name:}
  64.           callback {snprintf((char *)microtonal->Pname,MICROTONAL_MAX_NAME_LEN,"%s",o->value());}
  65.           xywh {8 64 285 25} labelfont 1 labelsize 12 align 5
  66.           code0 {o->insert((char *)microtonal->Pname);}
  67.         }
  68.         Fl_Input tuningsinput {
  69.           label {Tunings:}
  70.           xywh {8 144 182 264} type Multiline labelfont 1 labelsize 12 align 5 when 2
  71.           code0 {updateTuningsInput();}
  72.         }
  73.         Fl_Input commentinput {
  74.           label {Comment:}
  75.           callback {snprintf((char *)microtonal->Pcomment,MICROTONAL_MAX_NAME_LEN,"%s",o->value());}
  76.           xywh {8 104 391 25} labelfont 1 labelsize 12 align 5
  77.           code0 {o->insert((char *)microtonal->Pcomment);}
  78.         }
  79.         Fl_Counter {} {
  80.           label Shift
  81.           callback {microtonal->Pscaleshift=(int) o->value()+64;}
  82.           xywh {313 69 70 20} type Simple labelsize 12 align 1 minimum -63 maximum 64 step 1 textfont 1
  83.           code0 {o->value(microtonal->Pscaleshift-64);}
  84.         }
  85.         Fl_Button {} {
  86.           label {Import .SCL file}
  87.           callback {const char *filename;
  88. filename=fl_file_chooser("Open:","(*.scl)",NULL,0);
  89. if (filename==NULL) return;
  90. int result=microtonal->loadscl(filename);
  91. if (result==0) {
  92.        updateTuningsInput();
  93.        nameinput->cut(0,nameinput->maximum_size());
  94.        nameinput->insert((char *)microtonal->Pname);
  95.        nameinput->position(0);
  96.        commentinput->cut(0,commentinput->maximum_size());
  97.        commentinput->insert((char *)microtonal->Pname);
  98.        commentinput->position(0);
  99.        tuningsinput->position(0);
  100.        octavesizeoutput->do_callback();
  101.      } else {
  102.     fl_alert("Error: Could not load the file.");   
  103.      };}
  104.           tooltip {Inport Scala .scl file (tunnings)} xywh {243 411 84 15} box THIN_UP_BOX labelfont 1 labelsize 10
  105.         }
  106.         Fl_Group keymappinggroup {
  107.           label {Keyboard Mapping} open
  108.           xywh {193 144 206 264} box ENGRAVED_BOX labelfont 1 labelsize 12
  109.         } {
  110.           Fl_Input mappinginput {
  111.             xywh {250 147 146 258} type Multiline labelfont 1 labelsize 12 align 5 when 2
  112.             code0 {updateMappingInput();}
  113.           }
  114.           Fl_Counter firstnotecounter {
  115.             label {First note}
  116.             callback {microtonal->Pfirstkey=(int) o->value();}
  117.             tooltip {First MIDI note number} xywh {199 195 42 18} type Simple labelsize 10 align 5 minimum 0 maximum 127 step 1 textfont 1 textsize 12
  118.             code0 {o->value(microtonal->Pfirstkey);}
  119.           }
  120.           Fl_Counter lastnotecounter {
  121.             label {Last note}
  122.             callback {microtonal->Plastkey=(int) o->value();}
  123.             tooltip {Last MIDI note number} xywh {199 225 42 18} type Simple labelsize 10 align 5 minimum 0 maximum 127 step 1 value 127 textfont 1 textsize 12
  124.             code0 {o->value(microtonal->Plastkey);}
  125.           }
  126.           Fl_Counter middlenotecounter {
  127.             label {Midle note}
  128.             callback {microtonal->Pmiddlenote=(int) o->value();}
  129.             tooltip {Midle note (where scale degree 0 is mapped to)} xywh {199 267 42 18} type Simple labelsize 10 align 5 minimum 0 maximum 127 step 1 value 60 textfont 1 textsize 12
  130.             code0 {o->value(microtonal->Pmiddlenote);}
  131.           }
  132.           Fl_Value_Output mapsizeoutput {
  133.             label {Map Size}
  134.             callback {o->value(microtonal->Pmapsize);}
  135.             xywh {201 382 44 20} labelsize 10 align 5 maximum 500 step 1 value 12 textfont 1
  136.             code0 {o->value(microtonal->Pmapsize);}
  137.           }
  138.         }
  139.         Fl_Check_Button mappingenabledbutton {
  140.           label ON
  141.           callback {int x=(int) o->value();
  142. microtonal->Pmappingenabled=x;
  143. if (x==0) keymappinggroup->deactivate();
  144.  else keymappinggroup->activate();
  145. o->show();}
  146.           tooltip {Enable the Mapping (otherwise the mapping is linear)} xywh {198 150 48 21} box FLAT_BOX down_box DOWN_BOX labelfont 1
  147.           code0 {o->value(microtonal->Pmappingenabled);}
  148.           code1 {if (microtonal->Pmappingenabled==0) keymappinggroup->deactivate();}
  149.         }
  150.         Fl_Button {} {
  151.           label {Import .kbm file}
  152.           callback {const char *filename;
  153. filename=fl_file_chooser("Open:","(*.kbm)",NULL,0);
  154. if (filename==NULL) return;
  155. int result=microtonal->loadkbm(filename);
  156. if (result==0) {
  157.        updateMappingInput();
  158.        mappinginput->position(0);
  159.        mapsizeoutput->do_callback();
  160.        firstnotecounter->value(microtonal->Pfirstkey);
  161.        lastnotecounter->value(microtonal->Plastkey);
  162.        middlenotecounter->value(microtonal->Pmiddlenote);
  163.        mapsizeoutput->do_callback();
  164.        mappingenabledbutton->value(microtonal->Pmappingenabled);
  165.        mappingenabledbutton->do_callback();
  166.        afreqinput->value(microtonal->PAfreq);
  167.        anotecounter->value(microtonal->PAnote);
  168.        anotecounter->do_callback();
  169.      } else {
  170.     fl_alert("Error: Could not load the file.");   
  171.      };}
  172.           tooltip {Inport Scala .kbm file (keyboard mapping)} xywh {243 428 84 16} box THIN_UP_BOX labelfont 1 labelsize 10
  173.         }
  174.       }
  175.       Fl_Group {} {
  176.         xywh {108 2 140 45} box ENGRAVED_FRAME
  177.       } {
  178.         Fl_Counter anotecounter {
  179.           label {"A" Note}
  180.           callback {microtonal->PAnote=(int) o->value();
  181. if (microtonal->getnotefreq(microtonal->PAnote,0)<0.0) o->textcolor(FL_RED);
  182.  else o->textcolor(FL_BLACK);
  183.  
  184. o->redraw();}
  185.           tooltip {The "A" note (the reference note for which freq. ("A" freq) is given)} xywh {173 17 65 20} labelfont 1 labelsize 10 align 129 minimum 0 maximum 127 step 1 value 69 textfont 1 textsize 11
  186.           code0 {o->lstep(12);}
  187.           code1 {o->value(microtonal->PAnote);}
  188.         }
  189.         Fl_Value_Input afreqinput {
  190.           label {"A" Freq.}
  191.           callback {microtonal->PAfreq=o->value();}
  192.           tooltip {The freq. of "A" note (default=440.0)} xywh {118 17 45 20} labelfont 1 labelsize 10 align 1 minimum 1 maximum 20000 step 0.001 value 440 textfont 1 textsize 11
  193.           code0 {o->value(microtonal->PAfreq);}
  194.         }
  195.       }
  196.       Fl_Button {} {
  197.         label Close
  198.         callback {microtonaluiwindow->hide();}
  199.         xywh {333 413 67 28} box THIN_UP_BOX
  200.       }
  201.       Fl_Check_Button {} {
  202.         label {Enable Microtonal}
  203.         callback {microtonal->Penabled=(int) o->value();
  204. if (microtonal->Penabled==0) microtonalgroup->deactivate();
  205.    else microtonalgroup->activate();}
  206.         xywh {3 3 102 45} box PLASTIC_UP_BOX down_box DOWN_BOX labelfont 1 labelsize 12 align 148
  207.         code0 {o->value(microtonal->Penabled);}
  208.       }
  209.     }
  210.   }
  211.   Function {updateTuningsInput()} {} {
  212.     code {char *tmpbuf=new char[100];
  213.  
  214. tuningsinput->cut(0,tuningsinput->maximum_size());
  215.  
  216. for (int i=0;i<microtonal->getoctavesize();i++){
  217.    if (i!=0) tuningsinput->insert("\\n");
  218.    microtonal->tuningtoline(i,tmpbuf,100);
  219.    tuningsinput->insert(tmpbuf);
  220. };
  221.  
  222. delete(tmpbuf);} {}
  223.   }
  224.   Function {updateMappingInput()} {} {
  225.     code {char *tmpbuf=new char[100];
  226.  
  227. mappinginput->cut(0,tuningsinput->maximum_size());
  228.  
  229. for (int i=0;i<microtonal->Pmapsize;i++){
  230.    if (i!=0) mappinginput->insert("\\n");
  231.    if ((microtonal->Pmapping[i])==-1)
  232.         snprintf(tmpbuf,100,"x");
  233.    else snprintf(tmpbuf,100,"%d",microtonal->Pmapping[i]);
  234.    mappinginput->insert(tmpbuf);
  235. };
  236.  
  237. delete(tmpbuf);} {}
  238.   }
  239.   Function {MicrotonalUI(Microtonal *microtonal_)} {} {
  240.     code {microtonal=microtonal_;
  241.  
  242. make_window();} {}
  243.   }
  244.   Function {~MicrotonalUI()} {} {
  245.     code {microtonaluiwindow->hide();
  246. delete(microtonaluiwindow);} {}
  247.   }
  248.   Function {show()} {} {
  249.     code {microtonaluiwindow->show();} {}
  250.   }
  251.   Function {apply()} {} {
  252.     code {int err=microtonal->texttotunings(tuningsinput->value());
  253. if (err>=0) fl_alert("Parse Error: The input may contain only numbers (like 232.59)\\n or divisions (like 121/64).");
  254. if (err==-2) fl_alert("Parse Error: The input is empty.");
  255. octavesizeoutput->do_callback();
  256.  
  257. microtonal->texttomapping(mappinginput->value());
  258. mapsizeoutput->do_callback();
  259. anotecounter->do_callback();
  260.  
  261. //applybutton->color(FL_GRAY);} {}
  262.   }
  263.   decl {Microtonal *microtonal;} {}
  264.